package cn.bluethink.eguan.okrtask.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.bluethink.eguan.okrtask.entity.EgTaskKREntity;
import cn.bluethink.eguan.okrtask.entity.TaskKREntity;
import tk.mybatis.mapper.common.Mapper;

public interface EgTaskKRMapper extends Mapper<EgTaskKREntity> {

	public int updateTaskkr(@Param(value = "entity") EgTaskKREntity entity) throws Exception;
	
	/**
	 * 获取当前工作任务中的关键项总个数
	 * @param tid
	 * @return
	 * @throws Exception
	 */
	public int taskkrCount(@Param("tid") Long tid) throws Exception;

	/**
	 * 更新受影响的关键项排序
	 * @param firstsort
	 * @param lastsort
	 * @param bUp
	 * @return
	 * @throws Exception
	 */
	public int updateSort(@Param("firstsort") int firstsort, @Param("lastsort") int lastsort, @Param("tid") Long tid, @Param("bUp") Boolean bUp) throws Exception;
	
	/**
	 * 更新拖拽的关键项的排序
	 * @param tid
	 * @param sort
	 * @return
	 * @throws Exception
	 */
	public int updateSortByTid(@Param("krid") Long krid, @Param("sort") Integer sort) throws Exception;
	
	/**
	 * 根据任务Id获取关键项列表
	 * @param tid
	 * @return
	 * @throws Exception
	 */
	public List<TaskKREntity> selectTaskkrList(@Param("tid") Long tid) throws Exception;
	
	/**
	 * 根据条件获取任务Id列表
	 * 主要解决根据关键项被指派人获取其对应的任务Id列表
	 * @param whereSql
	 * @return
	 * @throws Exception
	 */
	public List<Long> taskIdsByKR(@Param("whereSql") String whereSql) throws Exception;
	
	/**
	 * 更新当前任务关键项状态为已延误
	 * @return
	 * @throws Exception
	 */
	public int updateStatusToDelay() throws Exception;

}
